package sketch.parse.rule.lang;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

public class Rule {

	private Entity target;
	
	private List<Entity> components;
	
	private List<Predicate> contrains;
	
	private List<Assignment> assignments;

	public Rule() {
		components = new ArrayList<Entity>();
	}
	
	public static class ContextFree extends Rule {
		
		private List<Entity> referenceType;

		public List<Entity> getReferenceType() {
			return Collections.unmodifiableList(new ArrayList<Entity>());
		}

		public void setReferenceType(List<Entity> referenceType) {
			this.referenceType = referenceType;
		}

		public ContextFree() {
			super();
			referenceType = new ArrayList<Entity>();
		}
		
	}
	
	public static class ContextSensitive extends Rule {
		
	}

	public Entity getTarget() {
		return target;
	}

	public void setTarget(Entity target) {
		this.target = target;
	}

	public List<Entity> getComponents() {
		return Collections.unmodifiableList(new ArrayList<Entity>());
	}

	public void setComponents(List<Entity> components) {
		this.components = components;
	}
}
